package com.edu.exam.enums.quality.monitoring;

/**
 * 后续处理状态枚举
 * 
 * <p>定义违规行为的后续处理状态分类。</p>
 * 
 * @author 系统生成
 * @version 1.0
 * @since 2025-11-10
 */
public enum FollowUpStatus {
    
    /**
     * 无需跟进
     * <p>违规行为无需后续跟进。</p>
     */
    NONE("无需跟进", "违规行为无需后续跟进"),
    
    /**
     * 待跟进
     * <p>违规行为需要后续跟进。</p>
     */
    PENDING("待跟进", "违规行为需要后续跟进"),
    
    /**
     * 跟进中
     * <p>违规行为正在跟进中。</p>
     */
    IN_PROGRESS("跟进中", "违规行为正在跟进中"),
    
    /**
     * 已跟进
     * <p>违规行为已跟进完成。</p>
     */
    COMPLETED("已跟进", "违规行为已跟进完成"),
    
    /**
     * 跟进失败
     * <p>违规行为跟进失败。</p>
     */
    FAILED("跟进失败", "违规行为跟进失败");
    
    private final String displayName;
    private final String description;
    
    FollowUpStatus(String displayName, String description) {
        this.displayName = displayName;
        this.description = description;
    }
    
    public String getDisplayName() {
        return displayName;
    }
    
    public String getDescription() {
        return description;
    }
    
    /**
     * 根据显示名称获取枚举
     * 
     * @param displayName 显示名称
     * @return 对应的枚举值
     */
    public static FollowUpStatus fromDisplayName(String displayName) {
        for (FollowUpStatus status : values()) {
            if (status.getDisplayName().equals(displayName)) {
                return status;
            }
        }
        return NONE;
    }
    
    /**
     * 判断是否需要跟进
     * 
     * @return 如果需要跟进返回true
     */
    public boolean requiresFollowUp() {
        return this == PENDING || this == IN_PROGRESS;
    }
    
    /**
     * 判断是否为完成状态
     * 
     * @return 如果是完成状态返回true
     */
    public boolean isCompleted() {
        return this == COMPLETED || this == FAILED || this == NONE;
    }
}